//
//  RDeliverySDKSettings+Private.h
//  RDelivery
//
//  Created by selmerzhang on 2021/8/9.
//  Copyright © 2021 Tencent. All rights reserved.
//

#import "RDeliverySDKSettings.h"
#import "RDMediatorCenter.h"
#import "RDeliveyDataReporter.h"

NS_ASSUME_NONNULL_BEGIN

//正式环境url
FOUNDATION_EXPORT NSString * const RDeliveryReleaseServerHost;
//测试环境url
FOUNDATION_EXPORT NSString * const RDeliveryTestServerHost;
//预发布环境url
FOUNDATION_EXPORT NSString * const RDeliveryPreServerHost;
//服务路径
FOUNDATION_EXPORT NSString * const RDeliveryPullConfigServicePath;
//加密拉取服务路径
FOUNDATION_EXPORT NSString * const RDeliveryPullConfigServiceV2Path;
//拉取服务路径V3，1.1.7以上使用，后台增加手动压缩逻辑，SDK先解密，再解压
FOUNDATION_EXPORT NSString * const RDeliveryPullConfigServiceV3Path;
//根据任务ID获取配置服务路径
FOUNDATION_EXPORT NSString * const RDeliveryGetConfigServicePath;
// 获取 SDK 配置（TAB对账，灰度切换开关）
FOUNDATION_EXPORT NSString * const RDeliveryGetSDKConfigServicePath;
// 二维码扫码添加体验用户（加密）
FOUNDATION_EXPORT NSString * const RDeliveryScanQRCodeAddExpUserPath;
#ifdef SHIPLY_COMMERCIAL_VERSION
// 商业化版本
FOUNDATION_EXPORT NSString * const RDeliveryCommercialVersion;
#endif

//物理环境，仅TAB业务的测试环境需要映射预发布环境，其他业务只能使用正式环境。
typedef NS_ENUM(NSUInteger, RDConfigEnvironment) {
    RDEnvironmentRelease = 0,      // 正式环境
    RDEnvironmentTest = 1,         // 测试环境
    RDEnvironmentPre = 2,          // 预发布环境
};


@interface RDeliverySDKSettings (Private)

/// SDK实例唯一标识
- (NSString *)sdkIdentifier;

/// 存储标识
- (NSString *)storeIdentifierWithGuid:(NSString *)guid env:(NSString *)envId;

/// 最近拉取时间存储标识
- (NSString *)pullTimeStoreIdentifierWithGuid:(NSString *)guid env:(NSString *)envId;

/// 服务器地址
- (NSString *)serverName;

/// 物理环境，业务只使用正式环境
@property (nonatomic, assign) RDConfigEnvironment environment;

/// 用户注入功能模块实现
@property(nonatomic, strong, readonly) id<RDeliveryDependProtocol> depends;

/// 注入组件的中间层，通过中间层调用注入的实现
@property (nonatomic, strong, readonly) RDMediatorCenter *mediatorCenter;

/// 上报模块
@property(nonatomic, strong, readonly) RDeliveyDataReporter *reporter;

@end

NS_ASSUME_NONNULL_END
